
string getall(istringstream& ss) {
  string str;
  while(ss.good()) {
    string st;
    if(ss>>st) str.append(st+" "); // space separated
  }
  return str;
}

// '.' domain-variable separator
string get_domain_name(string vname) {
  int cdot=vname.rfind('.');
  if(cdot!=vname.npos) {
    return  vname.substr(0,cdot);
  } else return "";
}

string get_varname(string vname) {
  int cdot=vname.rfind('.');
  if(cdot!=vname.npos) vname.erase(0,cdot+1);
  return vname;
}

void get_buffer(Buffer& buf,string vname) {
  int cid=search_fd(get_domain_name(vname));
  if(cid>=0) {
    string svar=get_varname(vname);
    buf.refto(fd[cid],svar);
  } else {
    cid=search_buffer(vname);
    if(cid>=0) buf.refto(buffer[cid]);
  }
}


string get_filename(string name) {
  // * replaced by loop number
  int starpos=name.find('*');
  string nn;
  if(starpos!=name.npos) {
    nn=name.substr(0,starpos);
    name.erase(0,starpos+1);
    nn.append(as_string(loopcounter));
    nn.append(name);
  } else {
    nn=name;
  }
  
  // TODO: another symbol
  return nn;
}
